package com.se.nused;

import lombok.extern.slf4j.Slf4j;

/**
 * @Author: hdu_huang
 * @Date: 2018/12/26 16:30
 * 资源释放，文件、流等
 * try with resources  实现 Closeable 也行
 * 默认 final变量，离开作用域后单前线程自动执行close
 */

@Slf4j
public class AutoClosedTest implements AutoCloseable {

    public static void main(String[] args) throws Exception{
        AutoCloseable close = new AutoClosedTest(); //default final
        try(close) { //jdk9
            log.info("main try");
        }
        log.info("main escape try");

        close.close(); //也可以直接调用

        say("hello");
        say();
        say("hello", "world");
    }

    @Override
    public void close() {
        log.info("AutoClosedTest close exec!");
    }
    
    /**
     * @author hdu_huang
     * @date   2019/1/18 
     * @funs   不定参数[语法糖], 底层使用数组实现
     * 1.方法的参数列表中最多只有一个不定长度的参数
     * 2.不定长度的数组的位置必须是最后一个参数
     */
    
    private static void say(String...args) {
        log.info("args length = {}", args.length);
    }

    //可以重载，以具体个数为准
    private static void say(String content) {
        log.info(content);
    }
}
